package com.ns.scs.task.init;

import com.ns.core.current.config.SymbolsMark;
import com.ns.core.utils.bean.ServiceUtil;
import com.ns.scs.task.entity.ScheduledTask;
import com.ns.scs.task.mapper.ScheduledActuatorMapper;
import com.ns.scs.task.mapper.ScheduledTaskMapper;
import com.ns.scs.task.vo.ScheduledActuatorVO;
import com.ns.scs.task.vo.ScheduledTaskVO;
import org.springframework.util.ObjectUtils;

import java.util.Objects;

/**
 * 校验任务和执行器
 *
 * @author : liaowei
 * @version : v1.0.0
 * @since : 2024-12-29 11:44:23
 **/
public class TaskValidUtils {

    public static boolean isTaskValid(ScheduledTaskVO scheduledTask) {
        boolean validPass = true;
        ScheduledTaskMapper taskMapper = ServiceUtil.getBean(ScheduledTaskMapper.class);
        // 先判断任务执行器状态和任务状态
        ScheduledTask task = taskMapper.selectById(scheduledTask.getId());
        if (Objects.isNull(task)) {
            validPass = false;
        }
        // 任务已停用，不需要往下执行
        if (Objects.equals(SymbolsMark.ZERO, task.getStatus())) {
            validPass = false;
        }
        // 校验执行器
        ScheduledActuatorMapper actuatorMapper = ServiceUtil.getBean(ScheduledActuatorMapper.class);
        ScheduledActuatorVO actuatorVO = actuatorMapper.getById(scheduledTask.getActuatorId());
        // 执行器不存在，不需要往下执行
        if (ObjectUtils.isEmpty(actuatorVO)) {
            validPass = false;
        }
        // 执行器已停用，不需要往下执行
        if (Objects.equals(SymbolsMark.ZERO, actuatorVO.getStatus())) {
            validPass = false;
        }
        return validPass;
    }
}
